package net.fxug.hokuriku.chocolat.model.tracer
{
    import net.fxug.hokuriku.chocolat.logging.Logging;
    import net.fxug.hokuriku.chocolat.model.tracer.define.TracerDefine;
    import net.fxug.hokuriku.chocolat.model.tracer.mxml.TraceWindow;

    /**
    * 開発用のTraceクラス
    * 
    * Trace一発オフ機能 @see TracerDefine.as
    * 別ウィンドウにログ表示機能
    * リリース後はエラーログをファイル出力するのに使える
    */
    public class Tracer
    {
        static private var _trace_mxml:TraceWindow = null;
        
        public function Tracer()
        {
        }
        /**
         * 
         * @param str
         */
        static public function t(str:String, isSaveFile:Boolean = false):void
        {
            if (TracerDefine.IS_DEBUG === true)
            {
                // コンソールにtrace
                trace(str);
                
                // ウィンドウを起動してtrace
                if (TracerDefine.OPEN_NEW_WINDOW === true)
                {
                    Tracer._traceNewWindow(str);
                }
            }
            if (isSaveFile) {
                var log:Logging = new Logging();
                log.write(str);
            }
        }
        
        static private function _traceNewWindow(str:String):void
        {
            if (Tracer._trace_mxml === null)
            {
                Tracer._trace_mxml = new TraceWindow();
                
                Tracer._trace_mxml.open(true);
                
            }
            Tracer._trace_mxml.text_area.text += str + "\n";
            
        }
    }
}